package exception;

import java.io.FileOutputStream;
import java.io.IOException;
/**
 * JDK7之后，java推出了自动关闭特性
 * 旨在更优雅的在异常处理机制中关闭如流这样的操作
 */
public class AutoCloseableDemo {
    public static void main(String[] args) {
        //等价于FinallyDemo2，编译器知道，但虚拟机还是用原来的代码
        /*自动关闭特性是编译器认可的，代码最终会被编译器改成FinallyDemo2的样子*/
        try (//只有实现AutoCloseable接口的类才可以写在try（）小括号里
             /* 只有实现了java.io.AutoCloseable接口的类才可以在这里定义
                在try的()中定义并初始化需要在finally中调用close方法的对象。*/
                FileOutputStream fos=new FileOutputStream("fos.dat");
                )
        {
            fos.write(1);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //不必再书写finally自行调用对应的close方法了
    }
}
